﻿using System;
using System.CodeDom.Compiler;
using System.ComponentModel;
using System.Diagnostics;
using System.Xml.Serialization;

/// <summary>
/// Summary description for CXHotelRoomAvail
/// </summary>
namespace CE.HotelEan
{
    public class CXHotelRoomAvail
    {
        public CXHotelRoomAvail()
        {
            //
            // TODO: Add constructor logic here
            //
        }
        public HotelRoomAvailabilityResponse HotelRoomAvailabilityResponse { get; set; }
    }
    public class HotelRoomAvailabilityResponse : BaseResponse
    {
        public HotelRoomAvailabilityResponse(){}

        public string arrivalDate { get; set; }
        public string checkInInstructions { get; set; }
        public CouponInformationResponse CouponInformationResponse { get; set; }
        public string departureDate { get; set; }
        public string hotelAddress { get; set; }
        public string hotelCity { get; set; }
        public string hotelCountry { get; set; }
        public HotelDetails HotelDetails { get; set; }
        public long hotelId { get; set; }
        public HotelImages HotelImages { get; set; }
        public string hotelName { get; set; }
        [XmlElement("HotelRoomResponse")]
        public HotelRoomResponse[] HotelRoomResponse { get; set; }
        public string hotelStateProvince { get; set; }
        public int numberOfRoomsRequested { get; set; }
        [XmlIgnore]
        public bool numberOfRoomsRequestedSpecified { get; set; }
        public PropertyAmenities PropertyAmenities { get; set; }
        public string rateKey { get; set; }
        [XmlAttribute]
        public int size { get; set; }
        public string tripAdvisorRating { get; set; }
        public string tripAdvisorRatingUrl { get; set; }
        public int tripAdvisorReviewCount { get; set; }
        [XmlIgnore]
        public bool tripAdvisorReviewCountSpecified { get; set; }
    }
    public class CouponInformationResponse
    {
        public CouponInformationResponse(){}

        public decimal amount { get; set; }
        [XmlIgnore]
        public bool amountSpecified { get; set; }
        public string description { get; set; }
        [XmlArrayItem(IsNullable = false)]
        public Error[] ErrorList { get; set; }
        public string summary { get; set; }
        public string terms { get; set; }
        public string type { get; set; }
    }
    public class Error
    {
        public Error(){}

        public string code { get; set; }
        public string description { get; set; }
        public string value { get; set; }
    }
    public class HotelRoomResponse
    {
        public HotelRoomResponse(){}

        public BedTypes BedTypes { get; set; }
        public string cancellationPolicy { get; set; }
        [XmlArrayItem(IsNullable = false)]
        public CancelPolicyInfo[] CancelPolicyInfoList { get; set; }
        public int currentAllotment { get; set; }
        [XmlIgnore]
        public bool currentAllotmentSpecified { get; set; }
        public string deepLink { get; set; }
        public bool depositRequired { get; set; }
        [XmlIgnore]
        public bool depositRequiredSpecified { get; set; }
        public bool guaranteeRequired { get; set; }
        [XmlIgnore]
        public bool guaranteeRequiredSpecified { get; set; }
        public bool immediateChargeRequired { get; set; }
        [XmlIgnore]
        public bool immediateChargeRequiredSpecified { get; set; }
        public int minGuestAge { get; set; }
        public bool nonRefundable { get; set; }
        [XmlIgnore]
        public bool nonRefundableSpecified { get; set; }
        public string otherInformation { get; set; }
        public string policy { get; set; }
        public string promoDescription { get; set; }
        public string promoDetailText { get; set; }
        public string promoId { get; set; }
        public string promoType { get; set; }
        public string propertyId { get; set; }
        public int quotedOccupancy { get; set; }
        public bool rateChange { get; set; }
        [XmlIgnore]
        public bool rateChangeSpecified { get; set; }
        public string rateCode { get; set; }
        public string rateDescription { get; set; }
        public HotelRateInfo RateInfo { get; set; }
        public RateInfos RateInfos { get; set; }
        public string rateKey { get; set; }
        public int rateOccupancyPerRoom { get; set; }
        public string rateType { get; set; }
        public RoomImages RoomImages { get; set; }
        public RoomType RoomType { get; set; }
        public string roomTypeCode { get; set; }
        public string roomTypeDescription { get; set; }
        public string smokingPreferences { get; set; }
        public SupplierType supplierType { get; set; }
        [XmlIgnore]
        public bool supplierTypeSpecified { get; set; }
        public string taxRate { get; set; }
        public ValueAdds ValueAdds { get; set; }
    }
    public class RoomImages
    {
        public RoomImages(){}

        [XmlElement("RoomImage")]
        public RoomImage[] RoomImage { get; set; }
        [XmlAttribute]
        public int size { get; set; }
    }
    public class RoomImage
    {
        public RoomImage(){}

        public string roomTypeCode { get; set; }
        public string url { get; set; }
    }
}
